package eva.savant.businessobject.vt;

import eva.savant.businessobject.mt.Pexpedicion;
import javax.persistence.*;
import java.io.Serializable;

@Table(name="VT_EXPEDICION_CLIENTE")
@IdClass(ExpedicionClientePK.class)
@javax.persistence.Entity(name = "vt.ExpedicionCliente")
public class ExpedicionCliente extends eva.savant.businessobject.Entity {

    @ManyToOne
    @JoinColumn(name = "ID_CLIENTE", insertable = false, updatable = false)
    private Cliente cliente; //ID Cliente

    @ManyToOne
    @JoinColumn(name = "ID_PUESTO", insertable = false, updatable = false)
    private Pexpedicion puesto; //ID Puesto Expedicion

    @Id
    @Column(name="ID_CLIENTE")
    private Integer cliente_Id; //ID Cliente

    @Id
    @Column(name="ID_PUESTO")
    private String puesto_Id; //ID Puesto


    public ExpedicionCliente(Cliente cliente, Pexpedicion puesto, Integer operacionId, String sociedadId, Integer usuarioId) {

        this.cliente= cliente;

        this.cliente_Id= cliente != null? cliente.getId() : null;

        this.puesto= puesto;

        this.puesto_Id= puesto != null? puesto.getId() : null;

        this.operacionId= operacionId;

        this.sociedadId= sociedadId;

        this.usuarioId= usuarioId;

    }

    public ExpedicionCliente() {

    }


    public Cliente getCliente() {
    
        return cliente;
    }
    
    public void setCliente(Cliente cliente) {
    
        this.cliente = cliente;

        this.cliente_Id= cliente != null? cliente.getId() : null;
    }

    public Pexpedicion getPuesto() {
    
        return puesto;
    }
    
    public void setPuesto(Pexpedicion puesto) {
    
        this.puesto = puesto;

        this.puesto_Id= puesto != null? puesto.getId() : null;
    }

}

class ExpedicionClientePK implements Serializable {


    private Integer cliente_Id;

    private String puesto_Id;


    public ExpedicionClientePK(Integer cliente_Id, String puesto_Id) {

        this.cliente_Id= cliente_Id;

        this.puesto_Id= puesto_Id;

    }

    public ExpedicionClientePK() {

    }


    public Integer getCliente_Id() {
    
        return cliente_Id;
    }
    
    public void setCliente_Id(Integer cliente_Id) {
    
        this.cliente_Id = cliente_Id;
    }

    public String getPuesto_Id() {
    
        return puesto_Id;
    }
    
    public void setPuesto_Id(String puesto_Id) {
    
        this.puesto_Id = puesto_Id;
    }

    @Override
    public boolean equals(Object object) {

        if(object == null) return false;

        if(object == this) return true;

        if( !(object instanceof ExpedicionClientePK) ) return false;


        ExpedicionClientePK pk = (ExpedicionClientePK) object;


        return pk.getCliente_Id().equals(cliente_Id) &&

               pk.getPuesto_Id().equals(puesto_Id);
    }

    @Override
    public int hashCode() {

        int hashCode = 17;

        hashCode = 31 * hashCode + cliente_Id.hashCode();

        hashCode = 31 * hashCode + puesto_Id.hashCode();

        return hashCode;
    }

}
